/**
 * <p>Copyright:Copyright(c) 2019</p>
 * <p>Company:Professional</p>
 * <p>Package:com.cesgroup.zw.spring.boot.echarts.component.series</p>
 * <p>File:Treemap.java</p>
 * <p>类更新历史信息</p>
 * @todo chanlong(陈龙) 创建于 Jun 3, 2019 1:58:40 PM
 */
package com.cesgroup.zw.spring.boot.echarts.component.series;

import java.math.BigDecimal;

import com.cesgroup.zw.spring.boot.echarts.component.series.parent.AbstractSerires;
import com.cesgroup.zw.spring.boot.echarts.enums.ColorMapping;
import com.cesgroup.zw.spring.boot.echarts.enums.Easing;
import com.cesgroup.zw.spring.boot.echarts.model.series.Breadcrumb;
import com.cesgroup.zw.spring.boot.echarts.model.style.LabelStyle;
import com.cesgroup.zw.spring.boot.echarts.model.style.TreemapStyle;
import com.cesgroup.zw.spring.boot.supports.util.math.BigDecimalUtil;

import lombok.Data;
import lombok.EqualsAndHashCode;

/**
 * <p>描述: 层级图</p>
 * <p>Company: Professional</p>
 * @author chanlong(陈龙)
 * @date Jun 3, 2019 1:58:40 PM
 * @version 1.0.2019
 */
@Data @SuppressWarnings("serial")
@EqualsAndHashCode(callSuper = true)
public class Treemap extends AbstractSerires {

	/** tree组件离容器上侧的距离，[default: 'middle'] */
	private Object top;
	
	/** tree组件离容器左侧的距离，[default: 'left'] */
	private Object left;
	
	/** tree组件离容器右侧的距离，[default: 'right'] */
	private Object right;
	
	/** tree组件离容器下侧的距离，[default: 'bottom'] */
	private Object bottom;
	
	/** tree组件的宽度，[default: '80%'] */
	private Object width;
	
	/** tree组件的高度，[default: '80%'] */
	private Object height;
	
	/** 期望矩形长宽比率。布局计算时会尽量向这个比率靠近，默认为黄金比：0.5 * (1 + Math.sqrt(5)) */
	private BigDecimal squareRatio;
	
	/** 下钻的层级 */
	private Integer leafDepth;
	
	/** 当节点可以下钻时的提示符。只能是字符 */
	private String drillDownIcon;
	
	/** 是否开启鼠标缩放和平移漫游，[default: true] */
	private Object roam;
	
	/** 是否开启鼠标缩放和平移漫游，[default: 'zoomToNode'] */
	private Object nodeClick;
	
	/** 点击某个节点，会自动放大那个节点到合适的比例（节点占可视区域的面积比例），这个配置项就是这个比例 */
	private BigDecimal zoomToNodeRatio;

	/** treemap 多层配置 */
	private TreemapStyle[] levels;
	
	/** treemap 中支持对数据其他维度进行视觉映射，[default: 0] */
	private Integer visualDimension;
	
	/** 当前层级的最小 value 值。如果不设置则自动统计，[default: null] */
	private Integer visualMin;
	
	/** 当前层级的最大 value 值。如果不设置则自动统计，[default: null] */
	private Integer visualMax;
	
	/** 表示同一层级的节点的“颜色透明度”选取范围。数值范围 0 ~ 1 */
	private BigDecimal[] colorAlpha;
	
	/** 表示同一层级的节点的“颜色饱和度”选取范围。数值范围 0 ~ 1 */
	private BigDecimal[] colorSaturation;
	
	/** 表示同一层级节点，在颜色列表中（参见 color 属性）选择时，按照什么来选择，[default: 'index'] */
	private ColorMapping colorMappingBy;
	
	/** 如果某个节点的矩形的面积，小于这个数值（单位：px平方），这个节点就不显示，[default: 10] */
	private Integer	visibleMin;
	
	/** 如果某个节点的矩形面积，小于这个数值（单位：px平方），则不显示这个节点的子节点，[default: null] */
	private Integer childrenVisibleMin;
	
	/** 用于显示矩形的父节点的标签 */
	private LabelStyle upperLabel;
	
	/** 面包屑样式 */
	private Breadcrumb breadcrumb;
	
	/** 初始动画的时长，[default: 1000] */
	private Integer animationDuration;
	
	/** 初始动画的缓动效果，[default: quinticInOut] */
	private Easing animationEasing;
	
	/** 初始动画的延迟，[default: 0] */
	private Integer animationDelay;
	
	public void setSquareRatio(int squareRatio) {
		this.squareRatio = BigDecimalUtil.valueOf(squareRatio);
	}

	public void setSquareRatio(double squareRatio) {
		this.squareRatio = BigDecimalUtil.valueOf(squareRatio);
	}
	
	public Treemap() {
		this.setType("treemap");
	}
}
